{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<img src=\"zhenghaoyu.png\" alt=\"some_text\">\n",
    "<h1> 第二讲 程序设计基础</h1>\n",
    "<a id=backup></a>\n",
    "<H2>目录</H2>  \n",
    "\n",
    "[2.1 程序执行过程](#Section1)  \n",
    "[2.2 程序实例](#Section2)  \n",
    "[2.3 程序的基本结构](#Section3)     \n",
    "[2.4 顺序结构](#Section4)  \n",
    "[2.5 分支结构](#Section5)  \n",
    "[2.6 循环结构](#Section6) "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "1.判断模块是否存在"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "matplotlib                        3.8.4\n",
      "matplotlib-inline                 0.1.6\n"
     ]
    }
   ],
   "source": [
    "a=!pip list\n",
    "#print(a)\n",
    "flag=False\n",
    "for i in a:\n",
    "    if 'matplot' in i:\n",
    "        print(i)\n",
    "        flag=True\n",
    "if flag==False:\n",
    "    print('未找到matplotlib...')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "2.改动matplotlib图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x1d1e28ef410>,\n",
       " <matplotlib.lines.Line2D at 0x1d1e2139dc0>]"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib as mpl\n",
    "import matplotlib.pyplot as plt\n",
    "x = np.linspace(0,4*np.pi)\n",
    "plt.plot(x,np.sin(x+np.pi/2),x,np.cos(x))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "3.安装graphviz，并绘制流程图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Requirement already satisfied: graphviz in d:\\computer\\anaconda\\lib\\site-packages (0.20.3)\n",
      "Note: you may need to restart the kernel to use updated packages.\n"
     ]
    }
   ],
   "source": [
    "pip install graphviz"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 12.2.0 (20241103.1931)\n",
       " -->\n",
       "<!-- Pages: 1 -->\n",
       "<svg width=\"498pt\" height=\"676pt\"\n",
       " viewBox=\"0.00 0.00 498.32 675.50\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 671.5)\">\n",
       "<polygon fill=\"white\" stroke=\"none\" points=\"-4,4 -4,-671.5 494.32,-671.5 494.32,4 -4,4\"/>\n",
       "<!-- 1 -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>1</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"349.66\" cy=\"-649.5\" rx=\"32.12\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"349.66\" y=\"-643.33\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">开始</text>\n",
       "</g>\n",
       "<!-- 2 -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>2</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"466.22,-594.5 280.8,-594.5 233.1,-558.5 418.52,-558.5 466.22,-594.5\"/>\n",
       "<text text-anchor=\"middle\" x=\"349.66\" y=\"-571.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">请输入成绩=?</text>\n",
       "</g>\n",
       "<!-- 1&#45;&gt;2 -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>1&#45;&gt;2</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M349.66,-631.31C349.66,-623.73 349.66,-614.6 349.66,-606.04\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"353.16,-606.04 349.66,-596.04 346.16,-606.04 353.16,-606.04\"/>\n",
       "</g>\n",
       "<!-- 3 -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>3</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"349.66,-521.5 209,-503.5 349.66,-485.5 490.32,-503.5 349.66,-521.5\"/>\n",
       "<text text-anchor=\"middle\" x=\"349.66\" y=\"-498.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">x是否大于等于90?</text>\n",
       "</g>\n",
       "<!-- 2&#45;&gt;3 -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>2&#45;&gt;3</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M349.66,-558.31C349.66,-550.73 349.66,-541.6 349.66,-533.04\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"353.16,-533.04 349.66,-523.04 346.16,-533.04 353.16,-533.04\"/>\n",
       "</g>\n",
       "<!-- 4 -->\n",
       "<g id=\"node4\" class=\"node\">\n",
       "<title>4</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"264.66,-433 124,-415 264.66,-397 405.32,-415 264.66,-433\"/>\n",
       "<text text-anchor=\"middle\" x=\"264.66\" y=\"-409.95\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">x是否大于等于80?</text>\n",
       "</g>\n",
       "<!-- 3&#45;&gt;4 -->\n",
       "<g id=\"edge9\" class=\"edge\">\n",
       "<title>3&#45;&gt;4</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M334.46,-487.04C321.41,-473.75 302.39,-454.4 287.51,-439.25\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"290.29,-437.09 280.79,-432.41 285.3,-442 290.29,-437.09\"/>\n",
       "<text text-anchor=\"middle\" x=\"323.02\" y=\"-454.2\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">No</text>\n",
       "</g>\n",
       "<!-- a -->\n",
       "<g id=\"node7\" class=\"node\">\n",
       "<title>a</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"433.66\" cy=\"-361\" rx=\"37.53\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"433.66\" y=\"-355.95\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">Print A</text>\n",
       "</g>\n",
       "<!-- 3&#45;&gt;a -->\n",
       "<g id=\"edge8\" class=\"edge\">\n",
       "<title>3&#45;&gt;a</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M367.97,-487.5C382.65,-474.54 402.71,-454.52 414.66,-433 421.94,-419.88 426.54,-403.84 429.39,-390.33\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"432.78,-391.2 431.18,-380.72 425.9,-389.91 432.78,-391.2\"/>\n",
       "<text text-anchor=\"middle\" x=\"412.46\" y=\"-454.2\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">Yes</text>\n",
       "</g>\n",
       "<!-- 5 -->\n",
       "<g id=\"node5\" class=\"node\">\n",
       "<title>5</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"201.66,-325 61,-307 201.66,-289 342.32,-307 201.66,-325\"/>\n",
       "<text text-anchor=\"middle\" x=\"201.66\" y=\"-301.95\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">x是否大于等于70?</text>\n",
       "</g>\n",
       "<!-- 4&#45;&gt;5 -->\n",
       "<g id=\"edge11\" class=\"edge\">\n",
       "<title>4&#45;&gt;5</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M255.09,-397.9C245.01,-380.94 228.97,-353.95 217.1,-333.97\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"220.21,-332.36 212.09,-325.55 214.19,-335.94 220.21,-332.36\"/>\n",
       "<text text-anchor=\"middle\" x=\"250.73\" y=\"-355.95\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">No</text>\n",
       "</g>\n",
       "<!-- b -->\n",
       "<g id=\"node8\" class=\"node\">\n",
       "<title>b</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"372.66\" cy=\"-253\" rx=\"37.53\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"372.66\" y=\"-247.95\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">Print B</text>\n",
       "</g>\n",
       "<!-- 4&#45;&gt;b -->\n",
       "<g id=\"edge10\" class=\"edge\">\n",
       "<title>4&#45;&gt;b</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M284.07,-399.02C303.81,-382.81 333.94,-355.19 351.66,-325 359.31,-311.97 364.36,-295.93 367.59,-282.4\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"370.98,-283.28 369.66,-272.77 364.14,-281.81 370.98,-283.28\"/>\n",
       "<text text-anchor=\"middle\" x=\"349.64\" y=\"-355.95\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">Yes</text>\n",
       "</g>\n",
       "<!-- 6 -->\n",
       "<g id=\"node6\" class=\"node\">\n",
       "<title>6</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"140.66,-217 0,-199 140.66,-181 281.32,-199 140.66,-217\"/>\n",
       "<text text-anchor=\"middle\" x=\"140.66\" y=\"-193.95\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">x是否大于等于60?</text>\n",
       "</g>\n",
       "<!-- 5&#45;&gt;6 -->\n",
       "<g id=\"edge13\" class=\"edge\">\n",
       "<title>5&#45;&gt;6</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M192.4,-289.9C182.63,-272.94 167.1,-245.95 155.61,-225.97\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"158.79,-224.48 150.77,-217.56 152.72,-227.98 158.79,-224.48\"/>\n",
       "<text text-anchor=\"middle\" x=\"188.44\" y=\"-247.95\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">No</text>\n",
       "</g>\n",
       "<!-- c -->\n",
       "<g id=\"node9\" class=\"node\">\n",
       "<title>c</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"309.66\" cy=\"-145\" rx=\"37.53\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"309.66\" y=\"-139.95\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">Print C</text>\n",
       "</g>\n",
       "<!-- 5&#45;&gt;c -->\n",
       "<g id=\"edge12\" class=\"edge\">\n",
       "<title>5&#45;&gt;c</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M221.69,-291.21C242.02,-275.16 272.96,-247.66 290.66,-217 298.16,-204.01 302.78,-187.97 305.58,-174.43\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"308.98,-175.27 307.33,-164.8 302.1,-174.02 308.98,-175.27\"/>\n",
       "<text text-anchor=\"middle\" x=\"288.56\" y=\"-247.95\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">Yes</text>\n",
       "</g>\n",
       "<!-- d -->\n",
       "<g id=\"node10\" class=\"node\">\n",
       "<title>d</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"147.66\" cy=\"-91\" rx=\"38.04\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"147.66\" y=\"-85.95\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">Print D</text>\n",
       "</g>\n",
       "<!-- 6&#45;&gt;d -->\n",
       "<g id=\"edge14\" class=\"edge\">\n",
       "<title>6&#45;&gt;d</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M141.78,-180.97C142.85,-164.76 144.49,-140.06 145.76,-120.79\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"149.25,-121.06 146.41,-110.85 142.26,-120.6 149.25,-121.06\"/>\n",
       "<text text-anchor=\"middle\" x=\"155.32\" y=\"-139.95\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">Yes</text>\n",
       "</g>\n",
       "<!-- e -->\n",
       "<g id=\"node11\" class=\"node\">\n",
       "<title>e</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"243.66\" cy=\"-91\" rx=\"37.02\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"243.66\" y=\"-85.95\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">Print E</text>\n",
       "</g>\n",
       "<!-- 6&#45;&gt;e -->\n",
       "<g id=\"edge15\" class=\"edge\">\n",
       "<title>6&#45;&gt;e</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M155.42,-182.81C172.36,-165.38 200.36,-136.56 220.27,-116.07\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"222.74,-118.55 227.2,-108.94 217.72,-113.67 222.74,-118.55\"/>\n",
       "<text text-anchor=\"middle\" x=\"215.65\" y=\"-139.95\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">No</text>\n",
       "</g>\n",
       "<!-- 7 -->\n",
       "<g id=\"node12\" class=\"node\">\n",
       "<title>7</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"309.66\" cy=\"-18\" rx=\"32.12\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"309.66\" y=\"-11.82\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">结束</text>\n",
       "</g>\n",
       "<!-- a&#45;&gt;7 -->\n",
       "<g id=\"edge3\" class=\"edge\">\n",
       "<title>a&#45;&gt;7</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M432.35,-342.75C430.86,-321.79 428.66,-285.32 428.66,-254 428.66,-254 428.66,-254 428.66,-90 428.66,-53.15 386.05,-34.98 351.83,-26.33\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"352.62,-22.92 342.09,-24.08 351.05,-29.74 352.62,-22.92\"/>\n",
       "</g>\n",
       "<!-- b&#45;&gt;7 -->\n",
       "<g id=\"edge4\" class=\"edge\">\n",
       "<title>b&#45;&gt;7</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M371.33,-234.75C369.17,-210.39 364.04,-164.67 353.66,-127 345.83,-98.58 332.67,-67.55 322.78,-46.07\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"326.01,-44.71 318.59,-37.14 319.67,-47.68 326.01,-44.71\"/>\n",
       "</g>\n",
       "<!-- c&#45;&gt;7 -->\n",
       "<g id=\"edge5\" class=\"edge\">\n",
       "<title>c&#45;&gt;7</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M309.66,-126.62C309.66,-106.19 309.66,-71.99 309.66,-47.62\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"313.16,-47.75 309.66,-37.75 306.16,-47.75 313.16,-47.75\"/>\n",
       "</g>\n",
       "<!-- d&#45;&gt;7 -->\n",
       "<g id=\"edge6\" class=\"edge\">\n",
       "<title>d&#45;&gt;7</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M174.77,-78.12C202.13,-66.13 244.49,-47.56 274.43,-34.44\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"275.71,-37.7 283.46,-30.48 272.9,-31.29 275.71,-37.7\"/>\n",
       "</g>\n",
       "<!-- e&#45;&gt;7 -->\n",
       "<g id=\"edge7\" class=\"edge\">\n",
       "<title>e&#45;&gt;7</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M258.31,-74.24C266.97,-64.92 278.11,-52.94 287.8,-42.52\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"290.23,-45.04 294.48,-35.33 285.1,-40.28 290.23,-45.04\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.graphs.Digraph at 0x1d1e209cbf0>"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from graphviz import Digraph\n",
    "dot = Digraph()\n",
    "dot.node('1','开始')\n",
    "dot.node('2','请输入成绩=?',shape='parallelogram')\n",
    "dot.node('3','x是否大于等于90?',shape='diamond')\n",
    "dot.node('4','x是否大于等于80?',shape='diamond')\n",
    "dot.node('5','x是否大于等于70?',shape='diamond')\n",
    "dot.node('6','x是否大于等于60?',shape='diamond')\n",
    "dot.node('a','Print A')\n",
    "dot.node('b','Print B')\n",
    "dot.node('c','Print C')\n",
    "dot.node('d','Print D')\n",
    "dot.node('e','Print E')\n",
    "dot.node('7','结束')\n",
    "dot.edges(['12','23','a7','b7','c7','d7','e7'])\n",
    "dot.edge('3','a',label='Yes')\n",
    "dot.edge('3','4',label='No')\n",
    "dot.edge('4','b',label='Yes')\n",
    "dot.edge('4','5',label='No')\n",
    "dot.edge('5','c',label='Yes')\n",
    "dot.edge('5','6',label='No')\n",
    "dot.edge('6','d',label='Yes')\n",
    "dot.edge('6','e',label='No')\n",
    "\n",
    "dot"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "4.三个图像"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "      *\n",
      "     ***\n",
      "    *****\n",
      "   *******\n",
      "  *********\n",
      " ***********\n",
      "*************\n",
      "  **\n",
      "  **\n"
     ]
    }
   ],
   "source": [
    "def print_tree(height):\n",
    "    # 绘制树冠部分\n",
    "    for i in range(height):\n",
    "        # 每一行先打印空格，使星号居中\n",
    "        print(' ' * (height - i - 1) + '*' * (2 * i + 1))\n",
    "    \n",
    "    # 绘制树干部分\n",
    "    trunk_width = height // 3\n",
    "    trunk_height = height // 3\n",
    "    trunk_space = (height - trunk_width) // 2\n",
    "    \n",
    "    for i in range(trunk_height):\n",
    "        print(' ' * trunk_space + '*' * trunk_width)\n",
    "\n",
    "# 调用函数并设置树的高度\n",
    "print_tree(7)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "                                        *                                       \n",
      "                                                    *                           \n",
      "                                                               *                \n",
      "                                                                        *       \n",
      "                                                                              * \n",
      "                                                                                \n",
      "                                                                              * \n",
      "                                                                        *       \n",
      "                                                               *                \n",
      "                                                    *                           \n",
      "                                        *                                       \n",
      "                           *                                                    \n",
      "                *                                                               \n",
      "       *                                                                        \n",
      " *                                                                              \n",
      "*                                                                               \n",
      " *                                                                              \n",
      "       *                                                                        \n",
      "                *                                                               \n",
      "                           *                                                    \n"
     ]
    }
   ],
   "source": [
    "import math\n",
    "\n",
    "def draw_sin_wave(width, height):\n",
    "    for y in range(height):\n",
    "        sin_value = math.sin(2 * math.pi * y / height)\n",
    "        offset = int((sin_value + 1) * (width // 2))\n",
    "        for x in range(width):\n",
    "            if x == offset:\n",
    "                print('*', end='')\n",
    "            else:\n",
    "                print(' ', end='')\n",
    "        print()\n",
    "width = 80\n",
    "height = 20\n",
    "draw_sin_wave(width, height)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "          1\n",
      "         1 1\n",
      "        1 2 1\n",
      "       1 3 3 1\n",
      "      1 4 6 4 1\n",
      "     1 51010 5 1\n",
      "    1 6152015 6 1\n",
      "   1 721353521 7 1\n",
      "  1 82856705628 8 1\n",
      " 1 936841261268436 9 1\n"
     ]
    }
   ],
   "source": [
    "def generate_pascals_triangle(num_rows):\n",
    "    triangle = []\n",
    "    \n",
    "    for row_num in range(num_rows):\n",
    "        row = [1] * (row_num + 1)\n",
    "        \n",
    "        for j in range(1, row_num):\n",
    "            row[j] = triangle[row_num - 1][j - 1] + triangle[row_num - 1][j]\n",
    "        \n",
    "        triangle.append(row)\n",
    "    \n",
    "    return triangle\n",
    "\n",
    "def print_pascals_triangle(triangle, char_width=2):\n",
    "    max_value = max(max(row) for row in triangle)\n",
    "    space_count = lambda row_num: ' ' * ((char_width * (num_rows - row_num - 1)) // 2)\n",
    "    \n",
    "    for row_num, row in enumerate(triangle):\n",
    "        print(space_count(row_num), end='')\n",
    "        for num in row:\n",
    "            print(f'{num:>{char_width}}', end='')\n",
    "        print()\n",
    "\n",
    "num_rows = 10\n",
    "pascals_triangle = generate_pascals_triangle(num_rows)\n",
    "print_pascals_triangle(pascals_triangle)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id = Section1> </a>\n",
    "## 2.1 程序执行过程\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x1d1e205e000>,\n",
       " <matplotlib.lines.Line2D at 0x1d1e205e030>]"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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BrNmzeInP/lJglY6NR544AHOPfdccnNzKS0t5dprr+XAgQOj3ufVV1/FZrOd8bV///4ErXry3H///Wesu7y8fNT7JOvfdubMmcP+nT7/+c8Pe3yy/V1ff/11rr76aiorK7HZbPz+978f9HtN07j//vuprKwkMzOTiy++mD179oz5uBs3bmTRokV4PB4WLVrE008/bdIrmBijvd5AIMBXv/pVli5dSnZ2NpWVldx0002cPn161MfcsGHDsH/zgYEBk1/N2Iz197355pvPWPeqVavGfNxk/PsCw/6dbDYb//Zv/zbiY8r8940XKsCZIE8++SR33XUXX//619mxYwdr167lyiuvpLa2dtjjjx07xgc/+EHWrl3Ljh07+Id/+AfuvPNONm7cmOCVT5zXXnuNz3/+82zdupVNmzYRDAZZt24dvb29Y973wIED1NfXG19z585NwIqnzuLFiwet+7333hvx2GT+27799tuDXuemTZsA+PjHPz7q/ZLl79rb28uyZcv40Y9+NOzvv/vd7/L973+fH/3oR7z99tuUl5dz2WWXGXPqhmPLli1cf/31rF+/nl27drF+/Xquu+463nzzTbNexrgZ7fX29fXxzjvv8I1vfIN33nmHp556ioMHD/LhD394zMfNy8sb9Peur68nIyPDjJcwIcb6+wJcccUVg9b93HPPjfqYyfr3Bc74Gz366KPYbDY++tGPjvq4sv5944ammBDnnXeedvvttw/62YIFC7Svfe1rwx5/7733agsWLBj0s8997nPaqlWrTFujWTQ1NWmA9tprr414zCuvvKIBWnt7e+IWFie++c1vasuWLRv38an0t/3Sl76kzZ49WwuHw8P+Ppn/roD29NNPG/8Oh8NaeXm59v/+3/8zfjYwMKB5vV7tJz/5yYiPc91112lXXHHFoJ9dfvnl2g033BD3NU+Foa93ON566y0N0E6cODHiMf/zP/+jeb3e+C7OBIZ7vZ/61Ke0a665ZkKPk0p/32uuuUb7wAc+MOoxyfL3nQoqgzMB/H4/27dvZ926dYN+vm7dOjZv3jzsfbZs2XLG8Zdffjnbtm0jEAiYtlYz6OzsBKCwsHDMY5cvX05FRQWXXHIJr7zyitlLixuHDh2isrKSmpoabrjhBo4ePTrisanyt/X7/Tz22GN85jOfGXP4bLL+XWM5duwYDQ0Ng/52Ho+H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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib as mpl\n",
    "import matplotlib.pyplot as plt\n",
    "x = np.linspace(0,6*np.pi)\n",
    "plt.plot(x,np.sin(x),x,np.cos(x))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 程序设计语言：机器语言、汇编语言、高级语言\n",
    "## 编译和解释\n",
    "编译：fortran C C++ C#\n",
    "解释：basic JavaScript PHP \n",
    "Python？？？\n",
    "Python语言执行的几种方式：\n",
    "\n",
    "分析程序执行过程-IPO：  \n",
    "a. Input模块：  \n",
    "b. Process模块：  \n",
    "c. Output模块：  \n",
    "\n",
    "\n",
    "\n",
    "[返回](#backup)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id = Section2> </a>\n",
    "## 2.2 程序实例\n",
    "\n",
    "<p><a href=\"https://yanghailin.blog.csdn.net/article/details/81126087?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-5.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-5.no_search_link\">\n",
    "this is example of python</a></p"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "24\n",
      "['123', '124', '132', '134', '142', '143', '213', '214', '231', '234', '241', '243', '312', '314', '321', '324', '341', '342', '412', '413', '421', '423', '431', '432']\n"
     ]
    }
   ],
   "source": [
    "\"\"\"\n",
    "Created on Thu Jul 19 19:51:08 2018\n",
    "有四个数字：1、2、3、4，能组成多少个互不相同且无重复数字的三位数？各是多少？\n",
    "@author: yhl\n",
    "\"\"\"\n",
    " \n",
    "L=[]\n",
    "a=[1,2,3,4]\n",
    " \n",
    "#for i in range(len(a)):\n",
    " \n",
    "for val_1 in a:   #   for(i=1;i<n;I++)\n",
    "    for val_2 in a:\n",
    "        for val_3 in a:\n",
    "            if(val_1 == val_2 or val_1 == val_3 or val_2 == val_3):\n",
    "                continue;\n",
    "            else:\n",
    "                L.append(str(val_1)+str(val_2)+str(val_3))\n",
    " \n",
    " \n",
    "print(len(L)) \n",
    "print (L)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1 2 3 n= 1\n",
      "1 2 4 n= 2\n",
      "1 3 2 n= 3\n",
      "1 3 4 n= 4\n",
      "1 4 2 n= 5\n",
      "1 4 3 n= 6\n",
      "2 1 3 n= 7\n",
      "2 1 4 n= 8\n",
      "2 3 1 n= 9\n",
      "2 3 4 n= 10\n",
      "2 4 1 n= 11\n",
      "2 4 3 n= 12\n",
      "3 1 2 n= 13\n",
      "3 1 4 n= 14\n",
      "3 2 1 n= 15\n",
      "3 2 4 n= 16\n",
      "3 4 1 n= 17\n",
      "3 4 2 n= 18\n",
      "4 1 2 n= 19\n",
      "4 1 3 n= 20\n",
      "4 2 1 n= 21\n",
      "4 2 3 n= 22\n",
      "4 3 1 n= 23\n",
      "4 3 2 n= 24\n"
     ]
    }
   ],
   "source": [
    "n=0\n",
    "for i in range(1,5):\n",
    "    for j in range(1,5):\n",
    "        for k in range(1,5):\n",
    "            if( i != k ) and (i != j) and (j != k):\n",
    "                n=n+1\n",
    "                print (i,j,k,\"n=\",n)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "profit= 3.4250000000000003\n"
     ]
    }
   ],
   "source": [
    "'''\n",
    "企业发放的奖金根据利润提成。\n",
    "利润(I)低于或等于10万元时，奖金可提10%；\n",
    "利润高于10万元，低于20万元时，低于10万元的部分\n",
    "按10%提成，高于10万元的部分，可提成7.5%；\n",
    "20万到40万之间时，高于20万元的部分，可提成5%；\n",
    "40万到60万之间时高于40万元的部分，可提成3%；\n",
    "60万到100万之间时，高于60万元的部分，可提成1.5%;\n",
    "高于100万元时,超过100万元的部分按1%提成。\n",
    "从键盘输入当月利润I，求应发放奖金总数？\n",
    "'''\n",
    " \n",
    "profit = 0\n",
    "I = int(input(\"please input: \"))\n",
    "if(I<=10):\n",
    "    profit = 0.1 * I\n",
    "elif(I <= 20):\n",
    "    profit = 10 *0.1 + (I - 10)*0.075\n",
    "elif(I <=40):\n",
    "    profit = 10 * 0.1 + (20 - 10)*0.075 + (I - 20)*0.05\n",
    "elif(I <= 60):\n",
    "    profit = 10 * 0.1 + (20 - 10)*0.075 + (40 - 20)*0.05 + (I - 40)*0.03\n",
    "elif(I <= 100):\n",
    "    profit = 10 * 0.1 + (20 - 10)*0.075 + (40 - 20)*0.05 + (60 - 40)*0.03 + (I - 60)*0.015\n",
    "else : \n",
    "    profit = 10 * 0.1 + (20 - 10)*0.075 + (40 - 20)*0.05 + (60 - 40)*0.03 + (100 - 60)*0.015 + (I -100)*0.01\n",
    "    \n",
    "print (\"profit=\",profit)\n",
    "        "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5000.0\n",
      "6000.0\n",
      "6000.0\n",
      "10000.0\n",
      "7500.0\n",
      "10000.0\n",
      "profit= 44500.0\n"
     ]
    }
   ],
   "source": [
    "i = int(input('净利润:'))\n",
    "arr = [1000000,600000,400000,200000,100000,0]\n",
    "rat = [0.01,0.015,0.03,0.05,0.075,0.1]\n",
    "r = 0\n",
    "for idx in range(0,6):\n",
    "    if i>arr[idx]:\n",
    "        r+=(i-arr[idx])*rat[idx]#r=r+nnn\n",
    "        print((i-arr[idx])*rat[idx])\n",
    "        i=arr[idx]\n",
    "print (\"profit=\",r)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Python 数字类型转换\n",
    "有时候，我们需要对数据内置的类型进行转换，数据类型的转换，你只需要将数据类型作为函数名即可。\n",
    "\n",
    "int(x) 将x转换为一个整数。\n",
    "\n",
    "float(x) 将x转换到一个浮点数。\n",
    "\n",
    "complex(x) 将x转换到一个复数，实数部分为 x，虚数部分为 0。\n",
    "\n",
    "complex(x, y) 将 x 和 y 转换到一个复数，实数部分为 x，虚数部分为 y。x 和 y 是数字表达式。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id=Section3></a>\n",
    "## 2.3程序的基本结构\n",
    "结构化程序的三大基本结构：\n",
    "\n",
    "a.顺序结构  \n",
    "b.分支结构  \n",
    "c.循环结构  \n",
    "\n",
    "\n",
    "\n",
    "\n",
    "[返回](#backup)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id=Section4></a>\n",
    "## 2.4顺序结构\n",
    "\n",
    "### 数学函数\n",
    "<table><tr>\n",
    "<th>函数</th><th>返回值 ( 描述 )</th></tr>\n",
    "<tr><td><a target=\"_blank\" href=\"/python3/python3-func-number-abs.html\" rel=\"noopener noreferrer\">abs(x)</a></td><td>返回数字的绝对值，如abs(-10) 返回 10</td></tr>\n",
    "<tr><td><a target=\"_blank\" href=\"/python3/python3-func-number-ceil.html\" rel=\"noopener noreferrer\">ceil(x) </a></td><td>返回数字的上入整数，如math.ceil(4.1) 返回 5</td></tr>\n",
    "<tr><td><p>cmp(x, y)</p></td>\n",
    "<td>如果 x &lt; y 返回 -1, 如果 x == y 返回 0, 如果 x &gt; y 返回 1。 <strong style=\"color:red\">Python 3 已废弃，使用 (x&gt;y)-(x&lt;y) 替换</strong>。 </td>\n",
    "</tr>\n",
    "<tr><td><a target=\"_blank\" href=\"/python3/python3-func-number-exp.html\" rel=\"noopener noreferrer\">exp(x) </a></td><td>返回e的x次幂(e<sup>x</sup>),如math.exp(1) 返回2.718281828459045</td></tr>\n",
    "<tr><td><a target=\"_blank\" href=\"/python3/python3-func-number-fabs.html\" rel=\"noopener noreferrer\">fabs(x)</a></td><td>返回数字的绝对值，如math.fabs(-10) 返回10.0</td></tr>\n",
    "<tr><td><a target=\"_blank\" href=\"/python3/python3-func-number-floor.html\" rel=\"noopener noreferrer\">floor(x) </a></td><td>返回数字的下舍整数，如math.floor(4.9)返回 4</td></tr>\n",
    "<tr><td><a target=\"_blank\" href=\"/python3/python3-func-number-log.html\" rel=\"noopener noreferrer\">log(x) </a></td><td>如math.log(math.e)返回1.0,math.log(100,10)返回2.0</td></tr>\n",
    "<tr><td><a target=\"_blank\" href=\"/python3/python3-func-number-log10.html\" rel=\"noopener noreferrer\">log10(x) </a></td><td>返回以10为基数的x的对数，如math.log10(100)返回 2.0</td></tr>\n",
    "<tr><td><a target=\"_blank\" href=\"/python3/python3-func-number-max.html\" rel=\"noopener noreferrer\">max(x1, x2,...) </a></td><td>返回给定参数的最大值，参数可以为序列。</td></tr>\n",
    "<tr><td><a target=\"_blank\" href=\"/python3/python3-func-number-min.html\" rel=\"noopener noreferrer\">min(x1, x2,...) </a></td><td>返回给定参数的最小值，参数可以为序列。</td></tr>\n",
    "<tr><td><a target=\"_blank\" href=\"/python3/python3-func-number-modf.html\" rel=\"noopener noreferrer\">modf(x) </a></td><td>返回x的整数部分与小数部分，两部分的数值符号与x相同，整数部分以浮点型表示。</td></tr>\n",
    "<tr><td><a target=\"_blank\" href=\"/python3/python3-func-number-pow.html\" rel=\"noopener noreferrer\">pow(x, y)</a></td><td> x**y 运算后的值。</td></tr>\n",
    "<tr><td><a target=\"_blank\" href=\"/python3/python3-func-number-round.html\" rel=\"noopener noreferrer\">round(x [,n])</a></td><td><p>返回浮点数 x 的四舍五入值，如给出 n 值，则代表舍入到小数点后的位数。</p>\n",
    "<p><strong>其实准确的说是保留值将保留到离上一位更近的一端。</strong></p>\n",
    "</td></tr>\n",
    "<tr><td><a target=\"_blank\" href=\"/python3/python3-func-number-sqrt.html\" rel=\"noopener noreferrer\">sqrt(x) </a></td><td>返回数字x的平方根。</td></tr>\n",
    "</table>\n",
    "\n",
    "### 随机数函数\n",
    "随机数可以用于数学，游戏，安全等领域中，还经常被嵌入到算法中，用以提高算法效率，并提高程序的安全性。\n",
    "\n",
    "Python包含以下常用随机数函数：\n",
    "\n",
    "<table><tr>\n",
    "<th>函数</th><th>描述</th></tr>\n",
    "<tr><td><a target=\"_blank\" href=\"/python3/python3-func-number-choice.html\" rel=\"noopener noreferrer\">choice(seq)</a></td><td>从序列的元素中随机挑选一个元素，比如random.choice(range(10))，从0到9中随机挑选一个整数。</td></tr>\n",
    "<tr><td><a target=\"_blank\" href=\"/python3/python3-func-number-randrange.html\" rel=\"noopener noreferrer\">randrange ([start,] stop [,step]) </a></td><td>从指定范围内，按指定基数递增的集合中获取一个随机数，基数默认值为 1</td></tr>\n",
    "<tr><td><a target=\"_blank\" href=\"/python3/python3-func-number-random.html\" rel=\"noopener noreferrer\">random() </a></td><td> 随机生成下一个实数，它在[0,1)范围内。</td></tr>\n",
    "<tr><td><a target=\"_blank\" href=\"/python3/python3-func-number-seed.html\" rel=\"noopener noreferrer\">seed([x]) </a></td><td>改变随机数生成器的种子seed。如果你不了解其原理，你不必特别去设定seed，Python会帮你选择seed。</td></tr>\n",
    "<tr><td><a target=\"_blank\" href=\"/python3/python3-func-number-shuffle.html\" rel=\"noopener noreferrer\">shuffle(lst) </a></td><td>将序列的所有元素随机排序</td></tr>\n",
    "<tr><td><a target=\"_blank\" href=\"/python3/python3-func-number-uniform.html\" rel=\"noopener noreferrer\">uniform(x, y)</a></td><td>随机生成下一个实数，它在[x,y]范围内。</td></tr>\n",
    "</table>\n",
    "\n",
    "### 三角函数\n",
    "Python包括以下三角函数：\n",
    "<table><tr>\n",
    "<th>函数</th><th>描述</th></tr>\n",
    "<tr><td><a target=\"_blank\" href=\"/python3/python3-func-number-acos.html\" rel=\"noopener noreferrer\">acos(x)</a></td><td>返回x的反余弦弧度值。</td></tr>\n",
    "<tr><td><a target=\"_blank\" href=\"/python3/python3-func-number-asin.html\" rel=\"noopener noreferrer\">asin(x)</a></td><td>返回x的反正弦弧度值。</td></tr>\n",
    "<tr><td><a target=\"_blank\" href=\"/python3/python3-func-number-atan.html\" rel=\"noopener noreferrer\">atan(x)</a></td><td>返回x的反正切弧度值。</td></tr>\n",
    "<tr><td><a target=\"_blank\" href=\"/python3/python3-func-number-atan2.html\" rel=\"noopener noreferrer\">atan2(y, x)</a></td><td>返回给定的 X 及 Y 坐标值的反正切值。</td></tr>\n",
    "<tr><td><a target=\"_blank\" href=\"/python3/python3-func-number-cos.html\" rel=\"noopener noreferrer\">cos(x)</a></td><td>返回x的弧度的余弦值。</td></tr>\n",
    "<tr><td><a target=\"_blank\" href=\"/python3/python3-func-number-hypot.html\" rel=\"noopener noreferrer\">hypot(x, y)</a></td><td>返回欧几里德范数 sqrt(x*x + y*y)。 </td></tr>\n",
    "<tr><td><a target=\"_blank\" href=\"/python3/python3-func-number-sin.html\" rel=\"noopener noreferrer\">sin(x)</a></td><td>返回的x弧度的正弦值。</td></tr>\n",
    "<tr><td><a target=\"_blank\" href=\"/python3/python3-func-number-tan.html\" rel=\"noopener noreferrer\">tan(x)</a></td><td>返回x弧度的正切值。</td></tr>\n",
    "<tr><td><a target=\"_blank\" href=\"/python3/python3-func-number-degrees.html\" rel=\"noopener noreferrer\">degrees(x)</a></td><td>将弧度转换为角度,如degrees(math.pi/2) ，  返回90.0</td></tr>\n",
    "<tr><td><a target=\"_blank\" href=\"/python3/python3-func-number-radians.html\" rel=\"noopener noreferrer\">radians(x)</a></td><td>将角度转换为弧度</td></tr>\n",
    "</table>\n",
    "\n",
    "### 数学常量\n",
    "\n",
    "<table><tr>\n",
    "<th>常量</th><th>描述</th></tr>\n",
    "<tr><td>pi</td><td>数学常量 pi（圆周率，一般以π来表示）</td></tr>\n",
    "<tr><td>e</td><td>数学常量 e，e即自然常数（自然常数）。</td></tr>\n",
    "</table>\n",
    "\n",
    "[返回](#backup)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 7.0.1 (20221109.1506)\n",
       " -->\n",
       "<!-- Title: 顺序结构 Pages: 1 -->\n",
       "<svg width=\"208pt\" height=\"476pt\"\n",
       " viewBox=\"0.00 0.00 208.12 476.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 472)\">\n",
       "<title>顺序结构</title>\n",
       "<polygon fill=\"white\" stroke=\"none\" points=\"-4,4 -4,-472 204.12,-472 204.12,4 -4,4\"/>\n",
       "<!-- 1 -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>1</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"127.06,-468 73.06,-468 73.06,-432 127.06,-432 127.06,-468\"/>\n",
       "<text text-anchor=\"middle\" x=\"100.06\" y=\"-446.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">Start</text>\n",
       "</g>\n",
       "<!-- 2 -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>2</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"200.18,-396 40.91,-396 -0.06,-360 159.21,-360 200.18,-396\"/>\n",
       "<text text-anchor=\"middle\" x=\"100.06\" y=\"-374.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">input Radius =?</text>\n",
       "</g>\n",
       "<!-- 1&#45;&gt;2 -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>1&#45;&gt;2</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M100.06,-431.7C100.06,-424.41 100.06,-415.73 100.06,-407.54\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"103.56,-407.62 100.06,-397.62 96.56,-407.62 103.56,-407.62\"/>\n",
       "</g>\n",
       "<!-- 3 -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>3</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"143.06,-324 57.06,-324 57.06,-288 143.06,-288 143.06,-324\"/>\n",
       "<text text-anchor=\"middle\" x=\"100.06\" y=\"-302.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">Print Radius</text>\n",
       "</g>\n",
       "<!-- 2&#45;&gt;3 -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>2&#45;&gt;3</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M100.06,-359.7C100.06,-352.41 100.06,-343.73 100.06,-335.54\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"103.56,-335.62 100.06,-325.62 96.56,-335.62 103.56,-335.62\"/>\n",
       "</g>\n",
       "<!-- 4 -->\n",
       "<g id=\"node4\" class=\"node\">\n",
       "<title>4</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"152.56,-252 47.56,-252 47.56,-216 152.56,-216 152.56,-252\"/>\n",
       "<text text-anchor=\"middle\" x=\"100.06\" y=\"-230.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">Caculating Area</text>\n",
       "</g>\n",
       "<!-- 3&#45;&gt;4 -->\n",
       "<g id=\"edge3\" class=\"edge\">\n",
       "<title>3&#45;&gt;4</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M100.06,-287.7C100.06,-280.41 100.06,-271.73 100.06,-263.54\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"103.56,-263.62 100.06,-253.62 96.56,-263.62 103.56,-263.62\"/>\n",
       "</g>\n",
       "<!-- 5 -->\n",
       "<g id=\"node5\" class=\"node\">\n",
       "<title>5</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"165.56,-180 34.56,-180 34.56,-144 165.56,-144 165.56,-180\"/>\n",
       "<text text-anchor=\"middle\" x=\"100.06\" y=\"-158.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">Caculating perimeter</text>\n",
       "</g>\n",
       "<!-- 4&#45;&gt;5 -->\n",
       "<g id=\"edge4\" class=\"edge\">\n",
       "<title>4&#45;&gt;5</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M100.06,-215.7C100.06,-208.41 100.06,-199.73 100.06,-191.54\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"103.56,-191.62 100.06,-181.62 96.56,-191.62 103.56,-191.62\"/>\n",
       "</g>\n",
       "<!-- 6 -->\n",
       "<g id=\"node6\" class=\"node\">\n",
       "<title>6</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"127.06,-108 73.06,-108 73.06,-72 127.06,-72 127.06,-108\"/>\n",
       "<text text-anchor=\"middle\" x=\"100.06\" y=\"-86.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">print</text>\n",
       "</g>\n",
       "<!-- 5&#45;&gt;6 -->\n",
       "<g id=\"edge5\" class=\"edge\">\n",
       "<title>5&#45;&gt;6</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M100.06,-143.7C100.06,-136.41 100.06,-127.73 100.06,-119.54\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"103.56,-119.62 100.06,-109.62 96.56,-119.62 103.56,-119.62\"/>\n",
       "</g>\n",
       "<!-- 7 -->\n",
       "<g id=\"node7\" class=\"node\">\n",
       "<title>7</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"127.06,-36 73.06,-36 73.06,0 127.06,0 127.06,-36\"/>\n",
       "<text text-anchor=\"middle\" x=\"100.06\" y=\"-14.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">end</text>\n",
       "</g>\n",
       "<!-- 6&#45;&gt;7 -->\n",
       "<g id=\"edge6\" class=\"edge\">\n",
       "<title>6&#45;&gt;7</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M100.06,-71.7C100.06,-64.41 100.06,-55.73 100.06,-47.54\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"103.56,-47.62 100.06,-37.62 96.56,-47.62 103.56,-47.62\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.graphs.Digraph at 0x20baea4e410>"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import graphviz\n",
    "dot=graphviz.Digraph(comment='the round table',name=\"顺序结构\",node_attr={'shape': 'box'})\n",
    "dot.node('1','Start')\n",
    "dot.node('2','input Radius =?',shape='parallelogram')\n",
    "dot.node('3','Print Radius')\n",
    "dot.node('4','Caculating Area')\n",
    "dot.node('5','Caculating perimeter')\n",
    "dot.node('6','print')\n",
    "dot.node('7','end')\n",
    "dot.edges(['12','23','34','45','56','67'])\n",
    "dot"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Ridus= 15\n",
      "面积和周长: 706.8375000000001 94.245\n"
     ]
    }
   ],
   "source": [
    "''' \n",
    "计算圆周长\n",
    "'''\n",
    "Radius = eval(input(\"请输入圆半径:\"))\n",
    "print(\"Ridus=\",Radius)\n",
    "Area = 3.1415*Radius*Radius\n",
    "perimeter  = 2*3.1415*Radius \n",
    "print(\"面积和周长:\",Area,perimeter)\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id=section4></a>\n",
    "## 2.5分支结构\n",
    "### 2.5.1 Python比较运算符\n",
    "\n",
    "以下假设变量a为10，变量b为20：\n",
    "<table><tr>\n",
    "<th width=\"10%\">运算符</th><th>描述</th><th>实例</th>\n",
    "</tr>\n",
    "<tr>\n",
    "<td>==</td><td> 等于 - 比较对象是否相等</td><td> (a == b) 返回 False。 </td>\n",
    "</tr>\n",
    "<tr>\n",
    "<td>!=</td><td> 不等于 - 比较两个对象是否不相等</td><td> (a != b) 返回 True。 </td>\n",
    "</tr>\n",
    "\n",
    "<tr>\n",
    "<td>&gt;</td><td> 大于 - 返回x是否大于y</td><td> (a &gt; b) 返回 False。</td>\n",
    "</tr>\n",
    "<tr>\n",
    "<td>&lt;</td><td> 小于 - 返回x是否小于y。所有比较运算符返回1表示真，返回0表示假。这分别与特殊的变量True和False等价。注意，这些变量名的大写。</td><td> (a &lt; b) 返回 True。 </td>\n",
    "</tr>\n",
    "<tr>\n",
    "<td>&gt;=</td><td> 大于等于 - 返回x是否大于等于y。</td><td> (a &gt;= b) 返回 False。</td>\n",
    "\n",
    "</tr>\n",
    "<tr>\n",
    "<td>&lt;=</td><td> 小于等于 - 返回x是否小于等于y。</td><td> (a &lt;= b) 返回 True。 </td>\n",
    "</tr>\n",
    "</table>\n",
    "\n",
    "### 2.5.2 Python逻辑运算符        \n",
    "Python语言支持逻辑运算符，以下假设变量 a 为 10, b为 20:\n",
    "<table><tr>\n",
    "<th>运算符</th><th>逻辑表达式</th><th>描述</th><th>实例</th>\n",
    "</tr>\n",
    "<tr>\n",
    "<td>and</td><td>x and y</td><td> 布尔\"与\" - 如果 x 为 False，x and y 返回 x 的值，否则返回 y 的计算值。  </td><td> (a and b) 返回 20。</td>\n",
    "</tr>\n",
    "<tr>\n",
    "<td>or</td><td>x or y</td><td>布尔\"或\" - 如果 x 是 True，它返回 x 的值，否则它返回 y 的计算值。</td><td> (a or b) 返回 10。</td>\n",
    "</tr>\n",
    "<tr><td>not</td><td>not x</td><td>布尔\"非\" - 如果 x 为 True，返回 False 。如果 x 为 False，它返回 True。</td><td> not(a and b) 返回 False </td>\n",
    "</tr>\n",
    "</table>\n",
    "\n",
    "[返回](#backup)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.5.3 条件控制语句\n",
    "Python 条件语句是通过一条或多条语句的执行结果（True 或者 False）来决定执行的代码块。\n",
    "\n",
    "可以通过下图来简单了解条件语句的执行过程:\n",
    "\n",
    "<img src=\".//img//if-condition.jpg\" width=\"250\"></img>\n",
    "\n",
    "<img src=\".//img//python-if.webp\" width=\"150\"></img>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 例题 求绝对值。\n",
    "\n",
    "输入：x\n",
    "$$\n",
    "\\begin{align}\n",
    "&&\\left|y\\right |= \\left\\{\\begin{matrix}\n",
    "x & if \\: x\\geq 0\\\\-x& if \\:x< 0\n",
    "\\end{matrix}\\right.{\\color{Red} }\n",
    "\\end{align}\n",
    "$$\n",
    "输出：y"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'graphviz' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[1;32mc:\\VSWork\\Pythonwork\\0001\\第二_课程序设计基础.ipynb Cell 19\u001b[0m in \u001b[0;36m<cell line: 1>\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> <a href='vscode-notebook-cell:/c%3A/VSWork/Pythonwork/0001/%E7%AC%AC%E4%BA%8C_%E8%AF%BE%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1%E5%9F%BA%E7%A1%80.ipynb#X24sZmlsZQ%3D%3D?line=0'>1</a>\u001b[0m dot\u001b[39m=\u001b[39mgraphviz\u001b[39m.\u001b[39mDigraph(comment\u001b[39m=\u001b[39m\u001b[39m'\u001b[39m\u001b[39mthe round table\u001b[39m\u001b[39m'\u001b[39m,name\u001b[39m=\u001b[39m\u001b[39m\"\u001b[39m\u001b[39m分支结构\u001b[39m\u001b[39m\"\u001b[39m,node_attr\u001b[39m=\u001b[39m{\u001b[39m'\u001b[39m\u001b[39mshape\u001b[39m\u001b[39m'\u001b[39m: \u001b[39m'\u001b[39m\u001b[39mbox\u001b[39m\u001b[39m'\u001b[39m})\n\u001b[0;32m      <a href='vscode-notebook-cell:/c%3A/VSWork/Pythonwork/0001/%E7%AC%AC%E4%BA%8C_%E8%AF%BE%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1%E5%9F%BA%E7%A1%80.ipynb#X24sZmlsZQ%3D%3D?line=1'>2</a>\u001b[0m dot\u001b[39m.\u001b[39mnode(\u001b[39m'\u001b[39m\u001b[39m1\u001b[39m\u001b[39m'\u001b[39m,\u001b[39m'\u001b[39m\u001b[39m开始\u001b[39m\u001b[39m'\u001b[39m)\n\u001b[0;32m      <a href='vscode-notebook-cell:/c%3A/VSWork/Pythonwork/0001/%E7%AC%AC%E4%BA%8C_%E8%AF%BE%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1%E5%9F%BA%E7%A1%80.ipynb#X24sZmlsZQ%3D%3D?line=2'>3</a>\u001b[0m dot\u001b[39m.\u001b[39mnode(\u001b[39m'\u001b[39m\u001b[39m2\u001b[39m\u001b[39m'\u001b[39m,\u001b[39m'\u001b[39m\u001b[39m输入Real Number =?\u001b[39m\u001b[39m'\u001b[39m,shape\u001b[39m=\u001b[39m\u001b[39m'\u001b[39m\u001b[39mparallelogram\u001b[39m\u001b[39m'\u001b[39m)\n",
      "\u001b[1;31mNameError\u001b[0m: name 'graphviz' is not defined"
     ]
    }
   ],
   "source": [
    "dot=graphviz.Digraph(comment='the round table',name=\"分支结构\",node_attr={'shape': 'box'})\n",
    "dot.node('1','开始')\n",
    "dot.node('2','输入Real Number =?',shape='parallelogram')\n",
    "dot.node('3','判断RealNumber是否大于0？',shape='diamond')\n",
    "dot.node('4','RealNumber=RealNumber')\n",
    "dot.node('5','RealNumber=-RealNumber')\n",
    "dot.node('6','输出绝对值',shape='parallelogram')\n",
    "dot.node('7','结束')\n",
    "dot.edges(['12','23','34','35','46','56','67'])\n",
    "dot"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Real Number 3\n",
      "绝对值: 3\n"
     ]
    }
   ],
   "source": [
    "'''\n",
    "求绝对值。\n",
    "'''\n",
    "RealNumber = eval(input(\"输入实数:\"))\n",
    "\n",
    "if (RealNumber < 0):\n",
    "    RealNumber = -RealNumber\n",
    "print(\"绝对值:\",RealNumber)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id=section6></a>\n",
    "## 2.6循环结构\n",
    "\n",
    "循环结构：\n",
    "\n",
    "while语句\n",
    "\n",
    "for语句\n",
    "\n",
    "循环分类：  \n",
    "当型循环  \n",
    "直到型循环  \n",
    "\n",
    "\n",
    "\n",
    "\n",
    "[返回](#backup)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "True\n"
     ]
    }
   ],
   "source": [
    "char1 =\"a\"\n",
    "char2=\"b\"\n",
    "char3=\"c\"\n",
    "char=char1+char2+char3\n",
    "boor1=(char[2]==char3)\n",
    "print(boor1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 例题 整数累加：  \n",
    "输入：正整数R    \n",
    "处理：  \n",
    "S=1+2+3+…+R  \n",
    "<img src=\"./img/int_add.png\" width=\"150\">  \n",
    "输出：输出S"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "累加求和 55\n"
     ]
    }
   ],
   "source": [
    "R = eval(input(\"请输入正整数:\"))\n",
    "i, S = 0, 0\n",
    "while (i<=R):\n",
    "    S = S + i\n",
    "    i = i + 1\n",
    "print(\"累加求和\",S)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Python 提供了 for 循环和 while 循环（在 Python 中没有 do..while 循环）:\n",
    "\n",
    "<table><tr><th style=\"width:30%\">循环类型</th><th>描述</th></tr>\n",
    "<tr><td><a href=\"/python/python-while-loop.html\" title=\"Python WHILE 循环\">while 循环</a></td><td>在给定的判断条件为 true 时执行循环体，否则退出循环体。</td></tr>\n",
    "<tr><td><a href=\"/python/python-for-loop.html\" title=\" Python FOR 循环\">for 循环</a></td><td>重复执行语句</td></tr>\n",
    "<tr><td><a href=\"/python/python-nested-loops.html\" title=\"Python 循环全套\">嵌套循环</a></td><td>你可以在while循环体中嵌套for循环</td></tr>\n",
    "</table>\n",
    "\n",
    "### 循环控制语句\n",
    "循环控制语句可以更改语句执行的顺序。Python支持以下循环控制语句：\n",
    "<table><tr><th style=\"width:30%\">控制语句</th><th>描述</th></tr>\n",
    "<tr><td><a href=\"/python/python-break-statement.html\" title=\"Python break 语句\">break 语句</a></td><td>在语句块执行过程中终止循环，并且跳出整个循环</td></tr>\n",
    "<tr><td><a href=\"/python/python-continue-statement.html\" title=\"Python  语句\">continue 语句</a></td><td>在语句块执行过程中终止当前循环，跳出该次循环，执行下一次循环。</td></tr>\n",
    "<tr><td><a href=\"/python/python-pass-statement.html\" title=\"Python pass 语句\">pass 语句</a></td><td>pass是空语句，是为了保持程序结构的完整性。</td></tr>\n",
    "</table>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 例题 绘制数字图画\n",
    "   <img src=\"duola.jpg\" width=\"150 \" alt=\"机器猫\">"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n",
      "\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n",
      "\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n",
      "\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\",tdddbpbbppqpddddbdbdu:\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n",
      "\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\",,?bpb)?????????????????????????vdddC\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n",
      "\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\",\"ppU????????????????????????????????????-wdd|\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n",
      "\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\",\"xdL]???????????xwpc????????????Jddddd[?????????-mdb,\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n",
      "\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"xd)????????????db.     wpr?????qkw      .db]??????????\\dd^\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n",
      "\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"dw?-???????????d~          _p??-dO           pq]???????????0dO^\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n",
      "\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"d)?????????????|p             .b?d.             (p-?????????????dk,\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n",
      "\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\":bt??????????????-b         `wp   qdr  qq>          b/??????????????]db\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n",
      "\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"bq????????????????d'        Oww,q   d  qwqwq         .d????????????????-pf\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n",
      "\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\",b?-????????????]]{pd         w_  w   d. w. 'w          d-?????????????????qb\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n",
      "\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"Jk????????????]pdpc  d         qwqqq  qd  qmqqw         `dOddpX]]?-Jd?????????du\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n",
      "\"\"\"\"\"\"\"\"\"\"\"\"\"\"qL???????Yp-]dp?      d          wqq.  dZb  uqw          dv     ,ddp????????????dd\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n",
      "\"\"\"\"\"\"\"\"\"\"\"\"\"pY???????]?dp!,dd\"     ;d              p;.dX             pd .  p1    Idd}????????-pp\"\"\"\"\"\"\"\"\"\"\"\"\"\n",
      "\"\"\"\"\"\"\"\"\"\"\"\"cq???????-dk      .i-bd~ijd.           bqddddd.          dd>>b~>>l'      ldd]???????dp\"\"\"\"\"\"\"\"\"\"\"\"\n",
      "\"\"\"\"\"\"\"\"\"\"\"\"b???????nd.      i>>1><<>><bb       )ddrxxrrrqdp:    .;dd{<<>>>i)>i.       .ddd?????-df\"\"\"\"\"\"\"\"\"\"\"\n",
      "\"\"\"\"\"\"\"\"\"\"\"p???????pw.      '>>(><)>)>i(>!wdddp`+drxxx  [rfp lqdq~.i>)>)>1>+-i<Cddbn'    .dr?????]d^\"\"\"\"\"\"\"\"\"\"\n",
      "\"\"\"\"\"\"\"\"\"\"\"d?????]dl^]CpbpddddbQt_i>>>>>!`.     Obxxxxxxxrjd       ^!>>>>>i>>i`            dd?????bq\"\"\"\"\"\"\"\"\"\"\n",
      "\"\"\"\"\"\"\"\"\"\"b??????d`        .'  `!!ii>l^.         bbxxxxxxjbm         .`,llI^    kbt   lpm   Ub????-d,\"\"\"\"\"\"\"\"\"\n",
      "\"\"\"\"\"\"\"\"\",d]???]dz     \"d'        .               !dddbddb.                ddwX{\"        d   Od????d+\"\"\"\"\"\"\"\"\"\n",
      "\"\"\"\"\"\"\"\"\",b????xd     L1    rbdY                      d                                 .d\\zw.bJ???bp\"\"\"\"\"\"\"\"\"\n",
      "\"\"\"\"\"\"\"\"\",d????d,    ;ddw'                            d                                  d    .p???pd,\"\"\"\"\"\"\"\"\n",
      "\"\"\"\"\"\"\"\"\",d????b pI   J>                              d                                 xb     p{??qd\"\"\"\"\"\"\"\"\"\n",
      "\"\"\"\"\"\"\"\"\"\"d???/d       QL                   ^i1zQZqppqdLc1i,                           d0      bm??pd,\"\"\"\"\"\"\"\"\n",
      "\"\"\"\"\"\"\"\"\",w]??Yd         bp.     'qdbqnrjxrxrrxrrrxxxxrxxxxrxxxxrrjxQhbddJ.         .bp        kd?]p0\"\"\"\"\"\"\"\"\"\n",
      "\"\"\"\"\"\"\"\"\"\"^b??)d              , drxrxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxnrrrpbdddC           dz?-d\"\"\"\"\"\"\"\"\"\"\n",
      "\"\"\"\"\"\"\"\"\"\"\"d???d                dxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrd               d]]tb\"\"\"\"\"\"\"\"\"\"\n",
      "\"\"\"\"\"\"\"\"\"\"\"\"b??dx               drxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrp              Qd-?d,\"\"\"\"\"\"\"\"\"\"\n",
      "\"\"\"\"\"\"\"\"\"\"\"\"vw][b              .prxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxd\"             .p[?bd,\"\"\"\"\"\"\"\"\"\"\n",
      "\"\"\"\"\"\"\"\"\"\"\"\"\"du-db               bxxxxxxxxxxxxxxxxxrrrrrrxxxxxxxxxxxxxxxxxxxxpw              dp?jb,\"\"\"\"\"\"\"\"\"\"\"\n",
      "\"\"\"\"\"\"\"\"\"\"\"\"\"\"dn]d1               dxxxxxrrJbddY~i>!iiiiiiii>/wbddOrrxxxxxxxrmw              dd?[b,\"\"\"\"\"\"\"\"\"\"\"\"\n",
      "\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"Ow?d?              .dxrjdQ>>iiiiiiiiiiiiiiiiiiiiiiii!Odkxxxrb?              Zd?\\b\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n",
      "\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\":d[dO               md<iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii!pbp               pd-pd\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n",
      "\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"btbd                mb>iiiiiiiiiiiiiiiiiiiiiiiiiiiiiidm.               pp]qw\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n",
      "\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\",ktb`                 pd!>iiiiiiiiiiiiiiiiiiiiii\\kd.                \"b]pd,\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n",
      "\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"|kdb.                  )ddZ>!iiiiiiiiiiii/bdp                    pb0d-\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n",
      "\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"uddb                      . ^r0ppwJ]                         ZpOb[\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n",
      "\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"^,pdpw,                                                   udddl\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n",
      "\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"dbxxjUbdddddm~.                              .-Qdpdddddpncb\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n",
      "\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"kpppddZrrxxxrrxrrjvCqdbdbdbbdbbddbbddbdpZXurjxrrxrxxrrxpbdpd:,\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n",
      "\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\",{b]?????]-OdwppdbbbbZYnjrrrrubbddbdbrxxxrrrxXObdddddddc???????pp:\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n",
      "\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"pd???????]p(           .   ndcqdpdU<I<d   .           dq????????]pc\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n",
      "\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\",dv??????]pd                /prddbdddb[ltd               kd?????????dp,\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n",
      "\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"br???????bd                 p+lIIppZpIIlxd                dd???????-]dp\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n",
      "\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\",bz???????qp                  JbIllbpupIll!b                .dp????????-dq\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n",
      "\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\",dp???????}b.                   CbIIIdIIIIpd                  !d??????????dw\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n",
      "\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"-d????????dO                      IdddddbO                     dd?????????pd\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n",
      "\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\",d]???????xd                                                    \\d??????????pd\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "<>:7: SyntaxWarning: invalid escape sequence '\\|'\n",
      "<>:7: SyntaxWarning: invalid escape sequence '\\|'\n",
      "C:\\Users\\Renaissance\\AppData\\Local\\Temp\\ipykernel_11328\\1930703891.py:7: SyntaxWarning: invalid escape sequence '\\|'\n",
      "  \"$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\\|()1{}[]?-_+~<>i!lI;:,\\\"^`'. \")\n"
     ]
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "show_heigth = 50\n",
    "show_width = 110\n",
    "#这两个数字是调出来的\n",
    "\n",
    "ascii_char = list(\n",
    "    \"$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\\|()1{}[]?-_+~<>i!lI;:,\\\"^`'. \")\n",
    "#生成一个ascii字符列表\n",
    "char_len = len(ascii_char)\n",
    "\n",
    "pic = plt.imread(\"duola.jpg\")\n",
    "#使用plt.imread方法来读取图像，对于彩图，返回size = heigth*width*3的图像\n",
    "#matplotlib 中色彩排列是R G B\n",
    "#opencv的cv2中色彩排列是B G R\n",
    "\n",
    "pic_heigth, pic_width, _ = pic.shape\n",
    "#获取图像的高、宽\n",
    "\n",
    "gray = 0.2126 * pic[:, :, 0] + 0.7152 * pic[:, :, 1] + 0.0722 * pic[:, :, 2]\n",
    "#RGB转灰度图的公式 gray = 0.2126 * r + 0.7152 * g + 0.0722 * b\n",
    "\n",
    "#思路就是根据灰度值，映射到相应的ascii_char\n",
    "for i in range(show_heigth):\n",
    "    #根据比例映射到对应的像素\n",
    "    y = int(i * pic_heigth / show_heigth)\n",
    "    text = \"\"\n",
    "    for j in range(show_width):\n",
    "        x = int(j * pic_width / show_width)\n",
    "        text += ascii_char[int(gray[y][x] / 256 * char_len)]\n",
    "    print(text)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# ! pip install -i http源\n",
    "新版ubuntu要求使用https源，要注意。\n",
    "\n",
    "清华：https://pypi.tuna.tsinghua.edu.cn/simple\n",
    "\n",
    "阿里云：https://mirrors.aliyun.com/pypi/simple/\n",
    "\n",
    "中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/\n",
    "\n",
    "华中理工大学：https://pypi.hustunique.com/\n",
    "\n",
    "山东理工大学：https://pypi.sdutlinux.org/ \n",
    "\n",
    "豆瓣：https://pypi.douban.com/simple/\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "base",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.4"
  },
  "orig_nbformat": 4
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
